package com.ziyueyuwen.xiniao.dao;

import com.ziyueyuwen.xiniao.bean.ZyClassLessonInfo;
import com.ziyueyuwen.xiniao.bean.vo.LessonInfoPageVO;
import com.ziyueyuwen.xiniao.bean.vo.ZyLessonVO;
import com.ziyueyuwen.xiniao.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;
/**
 * @author wancheng
 */
public interface ZyClassLessonInfoMapper extends BaseMapper<ZyClassLessonInfo>{
    /**
     * 上一节课
     * @param lessonId
     * @return
     */
    ZyClassLessonInfo getNextLesson(Integer lessonId);

    /**
     * 下一节课
     * @param lessonId
     * @return
     */
    ZyClassLessonInfo getPreviousLesson(Integer lessonId);

    /**
     * 按开始时间查询
     * @param begin
     * @param end
     * @return
     */
    List<ZyClassLessonInfo> getBeginTimeBetween(@Param("begin") Date begin,@Param("end")Date end);

    /**
     * 结束时间查询
     * @param begin
     * @param end
     * @return
     */
    List<ZyClassLessonInfo> getEndTimeBetween(@Param("begin") Date begin,@Param("end")Date end);

    /**
     * 获取课节
     * @param lessonIds
     * @return
     */
    List<ZyLessonVO> getStudentLesson(@Param("lessonIds") List<Integer> lessonIds);


    /**
     * 获取
     * @param lessonId
     * @return
     */
    ZyLessonVO getStudentLessonTaskByLessonId(@Param("lessonId") Integer lessonId);

    /**
     * 获取课节 班级 课程
     * @param lessonId
     * @return
     */
    ZyLessonVO getLessonClassAndCourse(Integer lessonId);

    /**
     * 未完成的课节
     * @param classId
     * @param date
     * @return
     */
    List<ZyLessonVO> getLessonByClassIdAndDate(@Param("classId") Integer classId, @Param("date") Date date);

    /**
     * 已上的课节
     * @param classId
     * @return
     */
    List<ZyLessonVO> getLessonAlreadyUsed(@Param("classId") Integer classId);

    /**
     * 获取课节
     * @param classId
     * @return
     */
    List<ZyLessonVO> getLessonName(Integer classId);

    /**
     * 获取最大课节数
     * @param classId
     * @return
     */
    Integer getMaxLessonIndex(Integer classId);

    /**
     * 课节分页查询
     * @param classId
     * @return
     */
    List<LessonInfoPageVO> getClassLessonForPage(Integer classId);

    /**
     * 通过id获取  返回lesson数据  老师 和 插班生
     * @param lessonId
     * @return
     */
    LessonInfoPageVO getLessonAndTeacherAndTransferStudents(Integer lessonId);

    /**
     * 课节排序
     * @param classId
     */
    void arrangeClassLessonByClassId(Integer classId);

    /**
     * 获取插班课节
     * @param classId
     * @param studentAccount
     * @return
     */
    List<ZyClassLessonInfo> getTransferLesson(@Param("classId") Integer classId,@Param("studentAccount") String studentAccount);

    /**
     * 获取学生在班级中的课节,包括删除学生的历史记录
     * @param classId
     * @param studentAccount
     * @return
     */
    List<ZyClassLessonInfo> getLessonForStudent(@Param("classId") Integer classId,@Param("studentAccount") String studentAccount);
}